package com.robsonximenes.grana.bean;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.UniqueConstraint;

import org.hibernate.validator.constraints.Email;

import com.robsonximenes.grana.view.annotation.Enum;

import br.gov.component.demoiselle.crud.annotation.Label;
import br.gov.component.demoiselle.crud.annotation.NotField;
import br.gov.component.demoiselle.crud.annotation.NotFilter;
import br.gov.component.demoiselle.crud.annotation.input.Calendar;
import br.gov.component.demoiselle.crud.annotation.input.Tel;
import br.gov.framework.demoiselle.core.bean.IPojo;

@Entity
@UniqueConstraint(columnNames={"login","email"})
public class Usuario implements IPojo{

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue
	@NotFilter
	@NotField
	private Long id;

	@Label("{app.usuario.login}")
	private String login;

	@Label("{app.usuario.nome}")
	private String nome;

	@Email
	@Label("{app.usuario.email}")
	private String email;

	@Tel
	@NotFilter
	@Label("{app.usuario.telefone}")
	private String telefone;

	@Calendar
	@NotFilter
    @Temporal(TemporalType.DATE)
    @Label("{app.usuario.dataNascimento}")
    private Date dataNascimento;

	public static enum PERFIL{ADMINISTRADOR,USUARIO};

	@Enum
	@NotFilter
	@Label("{app.usuario.perfil}")
	@Enumerated(EnumType.ORDINAL)
	private PERFIL perfil = PERFIL.USUARIO;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public void setDataNascimento(Date dataNascimento) {
		this.dataNascimento = dataNascimento;
	}

	public Date getDataNascimento() {
		return dataNascimento;
	}

	public void setPerfil(PERFIL perfil) {
		this.perfil = perfil;
	}

	public PERFIL getPerfil() {
		return perfil;
	}



}
